// 初始化 patch(container, vnode)
function createdElemrnt(vnode) {
  let tag = vnode.tag // 目标元素
  let attrs = vnode.attrs || {} // 目标元素中的属性
  let children = vnode.children || [] // 子元素

  // 没有目标元素
  if(!tag) {
    return null
  }
  // 创建对应元素
  let elem = document.createElement(tag)

  let attrName
  // 遍历所有属性
  for(attrName in attrs) {
    // 检测是否拥有该属性
    if (attrs.hasOwnProperty(attrName)) {
      // 添加属性
      // setAttribute(属性名称, 属性值)
      elem.setAttribute(attrName, attrs[attrName])
    }
  }

  // 添加子元素
  children.forEach(function(childVnode) {
    // 递归添加
    elem.applendChild(createdElemrnt(childVnode))
  });
  return elem
}

// 更新update(vnode, newVnode)
function updateChildren(vnode, newVnode) {
  let children = vnode.children || [] // 现有节点
  let newChildren = newVnode.children || [] // 新节点
  children.forEach((item, index) => {
    let newChildrenVnode = newChildren[index] 
    if (item.tag === newChildrenVnode) {
      // 第一层没有变化,递归继续比较下一层
      updateChildren(item, newChildrenVnode)
    } else {
      // 第一层不一样,直接替换
      replaceNode(item, newChildrenVnode)
    }
  })
}